FactoryInvocationHandler{ }
invoke{
  T instance;
  if (createdTypeData.isConstructorInjection()) {
    CurrentInjectionPoint currentInjectionPoint=Container.instance().services().get(CurrentInjectionPoint.class);
    currentInjectionPoint.push(ConstructorInjectionPoint.of(bean,(WeldConstructor<T>)createdTypeData.getCreatedTypeConstructor()));
    instance=newInstance(parameters);
    currentInjectionPoint.pop();
 else {
  return instance;
}
newInstance{
  return createdTypeData.getCreatedTypeConstructor().getJavaMember().newInstance(createConstructorParameters(parameters));
}
createConstructorParameters{
  ParameterValue[] createdTypeConstructorParameterValues=createdTypeData.getCreatedTypeConstructorParameterValues();
  Object[] constructorParameters=new Object[createdTypeConstructorParameterValues.length];
    ParameterValue createdTypeConstructorParameterValue=createdTypeConstructorParameterValues[i];
    constructorParameters[i]=createdTypeConstructorParameterValue.getValue(beanManager,factoryMethodParameters);
}
